1. Technical Field
This invention relates generally to computer system data retrieval techniques.
2. Background of the Related Art
Information retrieval systems are known in the art. Such systems generally offer users a variety of means of expressing user intentions through queries. These include text search, parametric search, structured queries, selection from alternatives (i.e., browsing or navigation), and range specification. In general, the systems offer users a means of expressing queries using either a structured language (e.g., a language like SQL) or an informal input mechanism (e.g., English keyword search). When the input mechanism is informal, the problems of ambiguity may arise from the language itself. But, even when the input mechanism is formal, the user may not always succeed in expressing his or her intention in the formal query language.
Information Technology (IT) infrastructures can become large and complex, and this creates a need to provide administrators and others with the ability to query, display, and manipulate their operation in a timely manner. In particular, both experienced and inexperienced users need the ability to quickly find data within the IT infrastructure; likewise, external software programs that can be executed from a programmatic environment need the ability to quickly find specific data based on complex conditions and then output results in an object-oriented structured form.
Several organizations have attempted to provide a query language for IT infrastructure including the Distributed Management Task Force (DMTF) CIM Schema definitions, Microsoft Corporation's SQL for WMI (WQL), the Splunk search language, the Hyper9 natural language, HQL, and other XQuery based language representations. These languages have one or more deficiencies. They are narrowly defined for a specific vendor implementation, they do not provide domain specific capabilities, they are overly focused on natural language or structured queries, as the case may be, or they are so broad and verbose that they are only suited for programmatic execution (as opposed to, for example) execution from a simple command line. These existing languages also can require special programming expertise, and they may use rigid language constructs that do not allow for domain level data interpretation.